import { segment } from 'icqq';
import{isNotNull, synchronization}from'../mz/mz.js'
import { __PATH } from '../mz/mz.js';
import {
    Read_player,
    existplayer,
    Write_player,
    Write_thing,
    getplayerdang,
    Read_rensheng,
    existrensheng,
    Write_rensheng
  } from '../mz/mz.js';
  import data from '../../model/mzData.js'
  import fs from 'fs';
  import XLSX from 'xlsx';
  import {
    AppName
}
from '../../app.config.js';
import path, {
    join
}
from 'path';
import iconv from 'iconv-lite';
  let hasReplied = false; // 标志变量，初始值为 false
  export class rensheng extends plugin {
    constructor() {
      super({
        name: 'Yunzai_Bot_rensheng',
        dsc: '人生模块',
        event: 'message',
        priority: 600,
        rule: [
          {
            reg: /^(#|\/)开始人生模拟.*/,
            fnc: 'startrensheng',
          },
          {
            reg: /^(#|\/)结束现在人生.*/,
            fnc: 'stoprensheng',
          },
          {
            reg: /^(#|\/)下一年.*/,
            fnc: 'xiayear',
          },
          {
            reg: /^(#|\/)同步人生列表.*/,
            fnc: 'tongbu',
          },
        ],
      });
    }
    async startrensheng(e){
        if (!e.isGroup) {
            return;
          }      
          let usr_qq = e.user_id;
        //   let rensheng = await Read_rensheng(usr_qq)
          let exist = await existrensheng(usr_qq)
          if (!exist) {
            e.reply("没有存档开始自动创建人生存档")
            let n =1
            let new_player = {
                id: e.user_id,
                allrensheng:[{
                    name:`第${n}式人生`,
                    die:`生`,
                    year:0,
                    支线:`普通`
                }],
              };
              e.reply(`开始你的第${n}次人生`)
              await Write_rensheng(usr_qq,new_player)
              return;
          }else if (exist) {
            let rensheng = await Read_rensheng(usr_qq)
            for (let a = 0; a < rensheng.allrensheng.length; a++) {
                if (rensheng.allrensheng[a].die !== "死") {
                  if (!hasReplied) { // 检查是否已经回复过
                    e.reply(`你的第${a+1}次的人生未死亡，无法重开`);
                    hasReplied = true; // 设置标志变量为 true，表示已经回复过
                  }
                  return;
                }else{
                    let new_rensheng ={
                        name:`第${a+1}式人生`,
                        die:`生`,
                        year:0,
                        支线:`普通`
                    }
                    rensheng.allrensheng.push(new_rensheng)
                    if (!hasReplied) {
                    e.reply(`开始你的第${a+1}次人生`)
                    hasReplied = true;
                    }
                    await Write_rensheng(usr_qq,new_rensheng)
                    return;
                }
              }
          }
        //   await Write_rensheng(usr_qq,new_player)
          return;
    }
    async stoprensheng(e){
        if (!e.isGroup) {
            return;
          }      
          let usr_qq = e.user_id;
          let rensheng = await Read_rensheng(usr_qq)
          let exist = await existrensheng(usr_qq)
          if (!exist) {
            e.reply("没有存档")
            return;
          }else{
            for (let a = 0; a < rensheng.allrensheng.length; a++) {
                if (rensheng.allrensheng[a].die !== "死") {
                    if (!hasReplied) { // 检查是否已经回复过
                      e.reply(`成功结束了第${a}次人生`);
                      e.reply(`这里的人生可以结束，但你的人生可不能就这么结束了`)
                      rensheng.allrensheng[a].die = "生"
                      hasReplied = true; // 设置标志变量为 true，表示已经回复过
                    }
                    return;
                  }else{
                    if (!hasReplied) { // 检查是否已经回复过
                        e.reply(`?没有人生可以结束了`);
                        e.reply(`这里的人生已经结束，你的人生还要一直向前`)
                        hasReplied = true; // 设置标志变量为 true，表示已经回复过
                      }
                  }
            }
          }
          await Write_rensheng(usr_qq,rensheng)
          return;
    }
  async xiayear(e){
    // 读取 XLSX 文件
    const __dirname =
  path.resolve() + path.sep + 'plugins' + path.sep + AppName;
let rensehngxslx = path.join(__dirname, '/resources/data/xslx/人生.xlsx');
let rensehngjson = path.join(__dirname, '/resources/data/item/人生.json');

// 读取 JSON 文件并解析为 JavaScript 对象
const datajs = JSON.parse(fs.readFileSync(rensehngjson).toString());

// 解析指定路径的 Excel 文件（从缓冲区读取）
const workbook1 = XLSX.readFile(rensehngxslx);
const worksheet1 = workbook1.Sheets[workbook1.SheetNames[0]];
let jsonData1 = XLSX.utils.sheet_to_json(worksheet1, { header: 1 }).map((row) => ({
  name: row[0],
  year: parseInt(row[1]),
  die: row[2],
  支线: row[3]
}));

// 将转换后的数据写入 JSON 文件
fs.writeFileSync(rensehngjson, JSON.stringify(jsonData1, null, 4), 'utf8');



  console.log('转换完成！');
    if (!e.isGroup) {
        return;
      }
      
      let usr_qq = e.user_id;
      let rensheng = await Read_rensheng(usr_qq);
      let exist = await existrensheng(usr_qq);
      
      if (!exist) {
        e.reply("没有存档");
        return;
      }
      
      let matchingNames = [];
      let renshengnum;
      
      for (let a = 0; a < rensheng.allrensheng.length; a++) {
        renshengnum = a;
      }
      
      let t1 = rensheng.allrensheng[renshengnum];
      console.log(renshengnum);
      console.log(rensheng.allrensheng[renshengnum]);
      console.log(rensheng.allrensheng);
      console.log(t1.die);
      if (t1.die === "死") {
        e.reply("你的存档已死亡，请重开");
        return;
      }
      
      t1.year += 1;
      await Write_rensheng(usr_qq, rensheng);
      
      if (t1.支线 == "普通") {
        for (let item of data.rensheng_list) {
          if (item.year === t1.year) {
            matchingNames.push(item.name);
          }
        }
      
        if (matchingNames.length > 0) {
          let randomIndex = Math.floor(Math.random() * matchingNames.length);
          let randomName = matchingNames[randomIndex];
          let thing = data.rensheng_list.find((item) => item.name === randomName);
      
          if (thing) {
            e.reply(thing.name);
            t1.die = thing.die;
            t1.支线 = thing.支线;
            await Write_rensheng(usr_qq, rensheng);
            return;
          } else {
            e.reply("没有找到对应的回答语句");
            return;
          }
        }
        e.reply(`你的支线有问题`)
      } 

    
  
}
async tongbu(e){

// const __dirname = new URL('.', import.meta.url).pathname;
const __dirname =
  path.resolve() + path.sep + 'plugins' + path.sep + AppName;
let rensehngxslx = path.join(__dirname, '/resources/data/xslx/人生.xlsx');
let rensehngjson = path.join(__dirname, '/resources/data/item/人生.json');

// 读取 JSON 文件并解析为 JavaScript 对象
const datajs = JSON.parse(fs.readFileSync(rensehngjson).toString());

// 解析指定路径的 Excel 文件（从缓冲区读取）
const workbook1 = XLSX.readFile(rensehngxslx);
const worksheet1 = workbook1.Sheets[workbook1.SheetNames[0]];
let jsonData1 = XLSX.utils.sheet_to_json(worksheet1, { header: 1 }).map((row) => ({
  name: row[0],
  year: parseInt(row[1]),
  die: row[2],
  支线: row[3]
}));

// 将转换后的数据写入 JSON 文件
fs.writeFileSync(rensehngjson, JSON.stringify(jsonData1, null, 4), 'utf8');

console.log('合并和转换完成');
e.reply(`同步人生列表完成`);

}
// async tongbu(e){
//     const __dirname =
//     path.resolve() + path.sep + 'plugins' + path.sep + AppName;
//     let rensehngxslx =path.join(__dirname, '/resources/data/xslx/人生.xlsx')
//     let rensehngjson =path.join(__dirname, '/resources/data/item/人生.json')
//     // const datajs = JSON.parse((fs.readFileSync('../../resources/data/item/人生.json')).toString())
//     // const woeksheets = xlsx.parse(fs.readFileSync('../../resources/data/xslx/人生.xlsx'))
//     const workbook = XLSX.readFile(rensehngxslx);

//   // 获取第一个工作表数据
//   const worksheetData = workbook.Sheets[workbook.SheetNames[0]];

// // 转换数据格式
// const jsonData = XLSX.utils.sheet_to_json(worksheetData, { header: 1 }).map((row) => ({
//   name: row[0],
//   year: parseInt(row[1]),
//   die: row[2],
//   支线: row[3]
// }));

// // 读取现有的 JSON 文件数据
// const existingData = JSON.parse(fs.readFileSync(rensehngjson, 'utf-8'));

// // 合并数据
// const mergedData = [ ...jsonData];

// // 写入合并后的 JSON 数据到文件
// fs.writeFileSync(rensehngjson, JSON.stringify(mergedData, null, 4));

// console.log('同步人生列表完成');
//     //  // 获取第一个 Excel 文件解析后的数据
//     // let jsonData = woeksheets[0].data
//     // const data = [...jsonData]
//     //  // 创建一个空对象用于存储转换后的数据
//     //  const text = {}
//     //  let num = 0
//     //  // 遍历数据对象
//     //  for (let i in data) {
//     //      let key = data[i]
//     //      // 打印每个键的值
//     //      console.log(key)
//     //      // 检查文本数组的首个元素是否已经是 text 对象的属性
//     //      if (!text[key[0]]) {
//     //          // 如果不是，则创建一个空数组作为该属性的值
//     //          text[key[0]] = []
//     //      }
//     //      // 向相应的数组中推入包含文本值的对象
//     //      text[key[0]].push(
//     //          [
//     //              {
//     //                  type: 'text',
//     //                  text: key[1]
//     //              }
//     //          ]
//     //      )
//     //      num++
//     //  }
//     //  console.log(num)
//     //  // 将转换后的数据写入 'Excel.json' 文件
//     //  fs.writeFileSync('./Excel.json', JSON.stringify(text, null, 4))
//      e.reply(`同步人生列表完成`)
 }
 
// // 读取 XSLX 文件
// const workbook = XLSX.readFile(rensehngxslx);

// // 获取第一个工作表数据
// const worksheetData = workbook.Sheets[workbook.SheetNames[0]];

// // 转换数据格式
// const jsonData = XLSX.utils.sheet_to_json(worksheetData, { header: 1 }).map((row) => ({
//   name: row[0],
//   year: parseInt(row[1]),
//   die: row[2],
//   支线: row[3]
// }));

// // 写入 JSON 文件
// const jsonString = JSON.stringify(jsonData, null, 2);
// fs.writeFileSync(rensehngjson, jsonString, 'utf-8'); // 指定写入文件的编码为 UTF-8
    

      
  
